﻿BEGIN;
	-- tablas de atributos
	CREATE TABLE usuario (
		mail varchar(30), --es el mail 
		sobremi varchar(30),
		profesion varchar(30),
		nombre varchar(30),
		imagen varchar(128),
		trabajo varchar(30),
		casa varchar(30),
		contrasena char(15),
		primary key(mail)
	);
	CREATE TABLE circulo (
		id int,
		nombre varchar(20),
		creador varchar(30),
		tiene_usuarios boolean DEFAULT 'false',
		foreign key (creador) references usuario,
		primary key(id)
	);
	CREATE SEQUENCE pub_id_seq;
	CREATE TABLE publicacion(
		id integer not null default nextval('pub_id_seq'),
		publicador varchar(20),
		fecha date default now(),
		contenido varchar(140),
		primary key(id),
		foreign key(publicador) references usuario
	);
	CREATE TABLE texto (
		id int,
		primary key(id),
		foreign key(id) references publicacion
	);
	CREATE TABLE album (
		id int,
		nombre varchar(50),
		primary key(id),
		foreign key(id) references publicacion
	);
	CREATE TABLE foto (
		id int,
		album int,
		imagen varchar(50),
		primary key(id,album),
		foreign key(id) references publicacion,
		foreign key(album) references album
	);
	CREATE SEQUENCE com_id_seq;
	CREATE TABLE comentario (
		id integer not null default nextval('com_id_seq'),
		fecha date default now(),
		contenido varchar(140),
		primary key(id),
		publicacion int REFERENCES publicacion,
		comentador varchar(20) REFERENCES usuario
	);
	
	-- tablas multivaloradas
	CREATE TABLE estudios(
		mail varchar(30),
		estudio varchar(30),
		primary key(mail, estudio),
		foreign key(mail) references usuario
	);
	--vinculos a otras paginas
	CREATE TABLE vinculos(
		mail varchar(30),
		vinculo varchar(30),
		primary key(mail, vinculo),
		foreign key(mail) references usuario
	);
	CREATE TABLE lugares(
		mail varchar(30),
		lugar varchar(30),
		primary key(mail, lugar),
		foreign key(mail) references usuario
	);
	CREATE TABLE trabajos(
		mail varchar(30),
		trabajo varchar(30),
		primary key(mail, trabajo),
		foreign key(mail) references usuario
	);
	-- +1's a links
	CREATE TABLE masuno_links(
		mail varchar(30),
		url varchar(50),
		primary key(mail, url),
		foreign key(mail) references usuario
	);
	CREATE TABLE etiquetas(
		publicacion int,
		etiqueta varchar(15),
		primary key(publicacion, etiqueta),
		foreign key(publicacion) references publicacion
	);
	-- relaciones
	CREATE TABLE usuario_en_circulo(
		circulo int,
		persona varchar(20),
		primary key(circulo, persona),
		foreign key(circulo) references circulo,
		foreign key(persona) references usuario
	);

	CREATE TABLE hace_mas_uno(
		publicacion int,
		persona varchar(20),
		primary key(publicacion, persona),
		foreign key(publicacion) references publicacion,
		foreign key(persona) references usuario
	);

	CREATE TABLE destinatario_usuario(
		publicacion int,
		destinatarioU varchar(20),
		primary key(publicacion,destinatarioU),
		foreign key(publicacion) references publicacion,
		foreign key(destinatarioU) references usuario
	);

	CREATE TABLE destinatario_circulo(
		publicacion int,
		destinatarioC int,
		primary key(publicacion,destinatarioC),
		foreign key(publicacion) references publicacion,
		foreign key(destinatarioC) references circulo
	);
	 
END;
 